"""
@Desc: 高频交易策略简介
高频交易（HFT）是一种利用算法和高速计算机在极短的时间内执行大量交易的策略。HFT通常依赖于市场微观结构的优势，包括瞬时价格变化和市场深度的利用。以下是一些常见的高频交易策略：
市场做市（Market Making）：
通过在买入和卖出之间提供流动性，利用买卖差价（Bid-Ask Spread）获利。
套利（Arbitrage）：
利用同一资产在不同市场之间的价格差异进行交易。
动量交易（Momentum Trading）：
识别并跟随价格趋势，基于价格变化的速度做出交易决策。
统计套利（Statistical Arbitrage）：
使用定量模型识别相关资产之间的定价不一致性。

@Auth: meihongliang-m2
@Date: 2025/3/18-16:21
"""
import numpy as np
import yfinance as yf


class MomentumStrategy:
    def __init__(self, ticker, window):
        self.ticker = ticker
        self.window = window
        self.data = None

    def fetch_data(self):
        # 获取历史数据
        self.data = yf.download(self.ticker, period="1y", interval="1m")  # 获取1年的分钟数据

    def generate_signals(self):
        # 计算动量信号
        self.data['Returns'] = self.data['Adj Close'].pct_change()
        self.data['Signal'] = np.where(self.data['Returns'] > 0, 1, -1)  # 如果收益率为正则买入，否则卖出

    def backtest(self):
        # 简单的回测逻辑
        self.data['Strategy_Returns'] = self.data['Signal'].shift(1) * self.data['Returns']
        self.data['Cumulative_Returns'] = (1 + self.data['Strategy_Returns']).cumprod()

    def run(self):
        self.fetch_data()
        self.generate_signals()
        self.backtest()
        print(self.data[['Adj Close', 'Signal', 'Cumulative_Returns']])


if __name__ == "__main__":
    strategy = MomentumStrategy('AAPL', window=14)
    strategy.run()
